

#ifndef UC_GECSINT_H
#define UC_GECSINT_H

#include "zadesk.h"
#include "zgeent3d.h"
#include "zgeponc3d.h"
#include "zgeponsrf.h"
#include "zgeintrvl.h"
#include "zgegbl.h"
#include "zgegblabb.h"
#pragma pack (push, 8)

class UcGeCurve3d;

class UcGeSurface;

class  
GX_DLLEXPIMPORT
UcGeCurveSurfInt : public UcGeEntity3d
{

public:

    UcGeCurveSurfInt ();
    UcGeCurveSurfInt (const UcGeCurve3d& crv, const UcGeSurface& srf,
                         const UcGeTol& tol = UcGeContext::gTol );
    UcGeCurveSurfInt (const UcGeCurveSurfInt& src);

    const UcGeCurve3d  *curve           () const;
    const UcGeSurface  *surface         () const;
    UcGeTol            tolerance        () const;

    int  numIntPoints (UcGeIntersectError& err) const;
    UcGePoint3d  intPoint (int intNum, UcGeIntersectError& err) const;
    void               getIntParams (int intNum,
                                         double& param1, UcGePoint2d& param2, UcGeIntersectError& err) const;
    void               getPointOnCurve (int intNum, UcGePointOnCurve3d&, UcGeIntersectError& err) const;
    void               getPointOnSurface (int intNum, UcGePointOnSurface&, UcGeIntersectError& err) const;
    void			   getIntConfigs (int intNum, UcGe::csiConfig& lower, 
								UcGe::csiConfig& higher, ZSoft::Boolean& smallAngle, UcGeIntersectError& err) const;

    UcGeCurveSurfInt& set (const UcGeCurve3d& cvr,
                                     const UcGeSurface& srf,
                                     const UcGeTol& tol = UcGeContext::gTol);

    UcGeCurveSurfInt& operator = (const UcGeCurveSurfInt& crvInt);
};
#pragma pack (pop)
#endif
